<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
            所有的同类型对象它们的原型对象都是同一个
                也就意味着,同类型对象的原型链是一样的
            
            原型的作用:
                原型就相当于是一个公共的区域,可以被所有该类实例访问,
                    可以将该类实例中,所有的公共属性(方法)统一存储到原形中
                    这样我们只需要创建一个属性,即可被所有实例访问

                JS中的继承就是通过原型来实现的,
                    当继承是,子类的原型就是一个父类的实例

            在对象中有些值是对象独有的,像属性(name,age,addree,gender)每个对象都应该有自己的值
                但是有些值,对每个对象来说都是一样的,像各种方法,对于一些值,就没有必要重复的创建

                尝试:
                    函数的原型链和Object的原型链是怎么样的?
        */
        class Animil {

        }
        class Cat extends Animil{

        }
        class TomCat extends Cat{

        }
        const miao = new TomCat()
        console.log(miao.__proto__.__proto__.__proto__.__proto__.__proto__);
        const obj1 = {
            name:"GG",
            sayHello(){
                console.log("GGG");
            }
        }
        console.log(obj1.__proto__.__proto__);
        console.log(obj1.sayHello.__proto__.__proto__);
    </script>
</head>
<body>
    
</body>
</html>